# !/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
===========================
@Time : 2022/7/25 0025 21:31
@Author : 测试开发工程师
@File : 1. k8s技术介绍.py
@Software: PyCharm
============================
"""

"""
=========================    万物皆资源   ======================================

kubernetes（k8s简介）    容器集群 - 一条命令操作 上百台 服务器   （启动 3 个 相同的 pod） 
    负载均衡能力 ： 分担 线上服务的压力（服务器配置相同）
    高可用的能力 ： 一个 pod 故障后，会立刻启动新的 pod
    用 container 将多个强相关的容器串联起来

pod: k8s 封装容器的最小的调度单位（把业务相关的容器）
    k8s 调度 pod，每个 pod 可以包含多个容器
    kubectl get pod
    kubectl describe pod podid(对应容器的podid)
    
deployment:  pod 的上级，管理 pod
    监控 pod 状态
    一个 deployment 可以关联多个 pod。 维护 pod 的数量 ，
    对应的文件字段是 replicas： 需要维护副本的数量。修改后 kubectl apply -f xxx.yaml
    kubectl delete pod podid(对应容器的podid)  一个 pod 故障后，会立刻启动新的 pod
    
service: 接管网络

label（k8s最重要的调度策略）: 标签     现有 GPU，SSD 节点
    深度学习： Selector: GPU   只选择有 GPU 的节点
    大量数据（IO加速） + 深度学习 ：   Selector: GPU，SSD
    
============================================= 判断服务是否健康 =========================================================

探针：  支持 http, bash, tcp   健康检查 
    
    livenessProbe（判断存活状态） ： 每隔一段时间探查服务接口，如果探查失败。证明服务不健康，
                这时候会杀掉 pod。Deployment 则会在杀死 pod 后，重新尝试拉起一个新的
                这个时候 service 会把老 pod 的地址移除掉，把新 pod 的 ip 加到 ip 池中
            常用参数：
                initialDelaySeconds: 间隔时间  30
                timeoutSeconds: 超时时间    5
    
    ReadnessProbe（判断是否可读） ： 
            每隔一段时间探查服务接口，如果探查失败，不会杀掉 pod。只是 service 会把这个 pod 的 ip 地址移除掉，
            以便之后的流量不会打入到这个不健康的 pod 中。在这之后探针会继续运行，一旦探针判断这个 pod 重新恢复了健康状态，
            就会把这个 pod 的 IP 加回来，继续发送流量。
            
    亲和性： k8s 调度策略
            
            

"""
